import axios from 'axios'

// 创建axios实例
const service = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  // 注意：这里设置的是请求超时时间，但可能不生效
})

// 请求拦截器 - 添加超时控制
service.interceptors.request.use(
  config => {
    // 创建AbortController实例
    const controller = new AbortController()
    
    // 设置超时时间（30秒）
    const timeoutId = setTimeout(() => {
      controller.abort()
    }, 6000000)
    
    // 将signal添加到config中
    config.signal = controller.signal
    
    // 存储timeoutId以便清理
    config.timeoutId = timeoutId
    
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器 - 清理超时
service.interceptors.response.use(
  response => {
    // 清理timeout
    if (response.config.timeoutId) {
      clearTimeout(response.config.timeoutId)
    }
    
    const res = response.data
    return res
  },
  error => {
    // 清理timeout
    if (error.config?.timeoutId) {
      clearTimeout(error.config.timeoutId)
    }
    
    if (error.name === 'AbortError') {
      console.error('请求超时，已取消')
      return Promise.reject(new Error('请求超时，请检查网络连接'))
    }
    
    console.log('err' + error)
    return Promise.reject(error)
  }
)

export default service